21
תגובות
עם איזה פונקציה מדפיסים שאילתא?

21 תשובות

avatar ענה shlomo120 ב 24 לאוגוסט 2012 #

כדי לראות האם היא תקינה בתחביר שלה ?
אני לא חושב שיש אחת כזו . צריך פשוט להעתיק את מה שבמרחאות ולהדפיס אותו...

avatar ענה RaFaeL ב 24 לאוגוסט 2012 #

תסביר את עצמך טוב יותר... לא הבנתי מה אתה רוצה בכלל חח..

avatar ענה iiddaannyy ב 24 לאוגוסט 2012 #

שום פונקציה. תדפיס עם echo.

avatar ענה soogo ב 24 לאוגוסט 2012 #

אני רוצה לעשות משהו כמו זה אבל שעובד

mysql_select_db("user", $ConnectDB);
    $result = mysql_query("SELECT Name FROM user");
    print $result;

avatar ענה razand ב 24 לאוגוסט 2012 #

$result = mysql_query("SELECT Name FROM user");
$array = mysql_fetch_array($result);
echo $array['username'];

avatar ענה soogo ב 24 לאוגוסט 2012 #

למה צריך מערך

avatar ענה shlomo120 ב 24 לאוגוסט 2012 #

הפונקציה mysql_fetch_array מכניסה את התוצאות של השאילתה למערך .

avatar ענה iiddaannyy ב 24 לאוגוסט 2012 #

fetch_array זה בזבוז. תשתמש ב-fetch_assoc או fech_row.

avatar ענה soogo ב 24 לאוגוסט 2012 #

למה הם מדפיסים רק שורה אחת ולא את כל השורות

avatar ענה cthulhu ב 24 לאוגוסט 2012 #

כי המצביע הפנימי של הפונקציה הזאת מתחיל מהשורה הראשונה. ל-php אין מושג באיזו צורה אתה תרצה להדפיס את השורות והאם בכלל תרצה להדפיס את כולן, לכן הוא משאיר את זה לך. כל זימון חדש שלה יזיז את המצביע הפנימי קדימה. לכן אתה יכול להשתמש בלולאה.

avatar ענה soogo ב 24 לאוגוסט 2012 #

אז איך זה שאני כותב פעמיים את השורה

print $array[Name];
זה מראה לי את אותו ערך

avatar ענה shlomo120 ב 24 לאוגוסט 2012 #

כדי להדפיס כמה שורות עליך להשתמש בלולאת while .

avatar ענה soogo ב 24 לאוגוסט 2012 #

כתבתי את זה

while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
        printf($row[1]);  
    }

אבל את השורה הראשונה הוא לא מדפיס

avatar ענה iiddaannyy ב 24 לאוגוסט 2012 #

@soogo
אתה צריך לזמן את fetch שוב כדי לקבל את השורה הבאה.

$q = mysql_query("SELECT `name` FROM `table`");
$r = mysql_fetch_assoc($q);
echo $r['name'];
$r = mysql_fetch_assoc($q);
echo $r['name'];
..
..
..
..

בפעם הראשונה נדפיס את העמודה name של השורה הראשונה, בפעם השנייה את name של השורה השנייה וכו' וכו'.
לרוב, עושים את זה עם while:
while ($r = mysql_fetch_assoc($q)) {
    echo $r['name'];
}

זה ידפיס לנו את העמודה name מכל השורות שחזרו מהשאילתה, שורה אחר שורה.
מה שקורה, זה שפונקציות ה-fetch למינהן מחזירות false כשאין יותר שורות. כל עוד יש שורות הן יחזירו את התוצאה במערך/אובייקט (תלוי באיזו פונקציה השתמשנו). מערך/אובייקט נחשב ל-true (מערך/אובייקט לא ריק, אבל fetch לא יכולה להחזיר מערך/אובייקט ריק).
לכן - כל עוד יש עוד שורות זמינות מהשאילתה, ה-while ימשיך לרוץ וכל פעם תכנס למשתנה r השורה הבאה. ברגע שלא יהיו עוד שורות, fetch תחזיר false והלולאה תיעצר.

avatar ענה ArielTador ב 24 לאוגוסט 2012 #

$result = "SELECT * FROM `table` WHERE `row`='row1'";
mysql_query($result);

avatar ענה soogo ב 24 לאוגוסט 2012 #

עדיין השורה הראשונה לא מודפסת

avatar ענה RaFaeL ב 24 לאוגוסט 2012 #

אריאל אתה מדבר שטויות,
תדפיס שגיאות ותראה כניראה יש שגיאה...

avatar ענה ArielTador ב 24 לאוגוסט 2012 #

מה שטויות בזה?, הוא לא יודע להמשיך אחרי זה עם mysql_fetch_assoc() ?

avatar ענה soogo ב 24 לאוגוסט 2012 #

‎‎

avatar ענה iiddaannyy ב 24 לאוגוסט 2012 #

בשביל מה fetch_assoc לפני ה-while? אתה מאבד שורה ככה.

avatar ענה soogo ב 24 לאוגוסט 2012 #

תודה רבה